%ifndef __ASM_GENERIC_MMAN_COMMON_INC
%define __ASM_GENERIC_MMAN_COMMON_INC

; Author: Michael S. Tsirkin <mst@mellanox.co.il>, Mellanox Technologies Ltd.
; Based on: asm-xxx/mman.h
; converted for nasm by Agguro 2015


%define PROT_READ	0x1		; page can be read 
%define PROT_WRITE	0x2		; page can be written 
%define PROT_EXEC	0x4		; page can be executed 
%define PROT_SEM	0x8		; page may be used for atomic ops 
%define PROT_NONE	0x0		; page can not be accessed 
%define PROT_GROWSDOWN	0x01000000	; mprotect flag: extend change to start of growsdown vma 
%define PROT_GROWSUP	0x02000000	; mprotect flag: extend change to end of growsup vma 

%define MAP_SHARED	0x01		; Share changes 
%define MAP_PRIVATE	0x02		; Changes are private 
%define MAP_TYPE	0x0f		; Mask for type of mapping 
%define MAP_FIXED	0x10		; Interpret addr exactly 
%define MAP_ANONYMOUS	0x20		; don't use a file 
%ifdef CONFIG_MMAP_ALLOW_UNINITIALIZED
%define MAP_UNINITIALIZED 0x4000000	; For anonymous mmap, memory could be uninitialized 
%else
%define MAP_UNINITIALIZED 0x0		; Don't support this flag 
%endif

%define MS_ASYNC	1		; sync memory asynchronously 
%define MS_INVALIDATE	2		; invalidate the caches 
%define MS_SYNC		4		; synchronous memory sync 

%define MADV_NORMAL	0		; no further special treatment 
%define MADV_RANDOM	1		; expect random page references 
%define MADV_SEQUENTIAL	2		; expect sequential page references 
%define MADV_WILLNEED	3		; will need these pages 
%define MADV_DONTNEED	4		; don't need these pages 

; common parameters: try to keep these consistent across architectures 
%define MADV_REMOVE	9		; remove these pages & resources 
%define MADV_DONTFORK	10		; don't inherit across fork 
%define MADV_DOFORK	11		; do inherit across fork 
%define MADV_HWPOISON	100		; poison a page for testing 
%define MADV_SOFT_OFFLINE 101		; soft offline page for testing 

%define MADV_MERGEABLE   12		; KSM may merge identical pages 
%define MADV_UNMERGEABLE 13		; KSM may not merge identical pages 

%define MADV_HUGEPAGE	14		; Worth backing with hugepages 
%define MADV_NOHUGEPAGE	15		; Not worth backing with hugepages 

%define MADV_DONTDUMP   16		; Explicity exclude from the core dump, overrides the coredump filter bits 
%define MADV_DODUMP	17		; Clear the MADV_NODUMP flag 

; compatibility flags 
%define MAP_FILE	0


; When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size.
; This gives us 6 bits, which is enough until someone invents 128 bit address
; spaces.
;
; Assume these are all power of twos.
; When 0 use the default page size.
 
%define MAP_HUGE_SHIFT	26
%define MAP_HUGE_MASK	0x3f

%endif ; __ASM_GENERIC_MMAN_COMMON_INC
